/**
 * Created On: Jul 11, 2012
 */
package com.athena.api.faculty;

import java.io.File;
import java.util.List;
import java.util.Map;

import com.athena.api.model.IReportCard;
import com.athena.dal.entities.Examination;
import com.athena.dal.entities.Faculty;
import com.athena.dal.entities.Marks;
import com.athena.dal.entities.Subject;

/**
 * Base contract for teaching service.
 * 
 * @author Ashish Kumar Sinha <aksinha.mail@gmail.com>
 * Version 1.0
 */
public interface ITeachingService {
	
	public List<Faculty> getTeachers(final int subjectId);
	
	public List<Faculty> getTeachers(final int subjectId, final int standard);
	
	public Subject getSubject(final int subjectId);
	
	public Subject updateCurriculum(final int subjectId, String curriculum);
	
	
	
	// Test and Examinations
	public Examination createTest(Examination test);
	
	public boolean cancelTest(Examination test);
	
	/**
	 * 
	 * @param marksSheet - excel spread sheet
	 * @return
	 */
	public List<Marks> uploadMarks(File marksSheet);
	
	/**
	 * 
	 * @param theMarks
	 * @return
	 */
	public Marks updateMarks(Marks theMarks);
	
	/**
	 * 
	 * @param classId
	 * @return - ordered list
	 */
	public List<Marks> getMarks(final int classId);
	
	public Map<Integer, List<Marks>> getMarks(List<Integer> listStudentIDs);
	
	/**
	 * 
	 * @param classId
	 * @return - ordered list
	 */
	public List<IReportCard> generateReportCard(final int classId);
	
	public Map<Integer, IReportCard> generateReportCard(List<Integer> listStudentIDs);
	
	// Assignment Services
	
	// Attendence Services
	
}
